Skip Headers

Oracle® Database SQL Reference 10g Release 2 (10.2) Part Number B14200-02 |
Home | Book List | Contents | Index | Master Index | Feedback

Previous | Next
| View PDF

# CREATE DIRECTORY

Purpose

Use the `CREATE` `DIRECTORY` statement to create a directory object. A directory object specifies an alias for a directory on the server file system where external binary file LOBs (`BFILE`s) and external table data are located. You can use directory names when referring to `BFILE`s in your PL/SQL code and OCI calls, rather than hard coding the operating system path name, for management flexibility.

All directories are created in a single namespace and are not owned by an individual schema. You can secure access to the `BFILE`s stored within the directory structure by granting object privileges on the directories to specific users.

See Also: "Large Object (LOB) Datatypes" for more information on `BFILE` objects GRANT for more information on granting object privileges external_table_clause ::= of `CREATE` `TABLE`

Prerequisites

You must have `CREATE` `ANY` `DIRECTORY` system privilege to create directories.

When you create a directory, you are automatically granted the `READ` and `WRITE` object privileges on the directory, and you can grant these privileges to other users and roles. The DBA can also grant these privileges to other users and roles.

`WRITE` privileges on a directory are useful in connection with external tables. They let the grantee determine whether the external table agent can write a log file or a bad file to the directory.

For file storage, you must also create a corresponding operating system directory, an ASM disk group, or a directory within an ASM disk group. Your system or database administrator must ensure that the operating system directory has the correct read and write permissions for Oracle Database processes.

Privileges granted for the directory are created independently of the permissions defined for the operating system directory, and the two may or may not correspond exactly. For example, an error occurs if sample user `hr` is granted `READ` privilege on the directory object but the corresponding operating system directory does not have `READ` permission defined for Oracle Database processes.

Syntax

create_directory::=

Description of the illustration create_directory.gif

Semantics

OR REPLACE

Specify `OR` `REPLACE` to re-create the directory database object if it already exists. You can use this clause to change the definition of an existing directory without dropping, re-creating, and regranting database object privileges previously granted on the directory.

Users who had previously been granted privileges on a redefined directory can still access the directory without being regranted the privileges.

See Also: DROP DIRECTORY for information on removing a directory from the database

directory

Specify the name of the directory object to be created. The maximum length of `directory` is 30 bytes. You cannot qualify a directory object with a schema name.

Oracle Database does not verify that the directory you specify actually exists. Therefore, take care that you specify a valid directory in your operating system. In addition, if your operating system uses case-sensitive path names, be sure you specify the directory in the correct format. You need not include a trailing slash at the end of the path name.

path_name

Specify the full path name of the operating system directory of the server where the files are located. The single quotes are required, with the result that the path name is case sensitive.

Example

Creating a Directory: Examples The following statement creates a directory database object that points to a directory on the server:

    CREATE DIRECTORY admin AS 'oracle/admin';

The following statement redefines directory database object `bfile_dir` to enable access to `BFILE`s stored in the operating system directory /`usr/bin/`:

    CREATE OR REPLACE DIRECTORY bfile_dir AS '/usr/bin/bfile_dir';